package org.example.test.test;

import java.util.HashMap;
import java.util.Map;

/**
 * 同构字符串
 * 给定两个字符串 s 和 t ，判断它们是否是同构的。
 * <p>
 * 如果 s 中的字符可以按某种映射关系替换得到 t ，那么这两个字符串是同构的。
 * <p>
 * 每个出现的字符都应当映射到另一个字符，同时不改变字符的顺序。不同字符不能映射到同一个字符上，相同字符只能映射到同一个字符上，字符可以映射到自己本身。
 */
public class IsIsomorphic {
    public static void main(String[] args) {
        System.out.println(isIsomorphic("egg", "add"));
    }

    public static boolean isIsomorphic(String s, String t) {
            Map<String, String> map = new HashMap<>();
            for (int i = 0; i < s.length(); i++) {
                String key = s.substring(i, i + 1);
                String value = t.substring(i, i + 1);
                if (map.containsKey(key)) {
                    if (!map.get(key).equals(value)){
                        return false;
                    }
                } else {
                    if (map.containsValue(value)){
                        return false;
                    }
                    map.put(key, value);
                }
            }
            return true;
    }
}
